iT邦幫忙

DAY 4
1

駭客手法解析~你不能不知的資安問題!!系列 第 4

XSS Pattern〈一〉

  • 分享至 

  • xImage
  •  

一些利用手段

簡單的範例:

<input type=text name=mail value=<?php echo $_GET['p']; ?>>

如果只是輸入 http://localhost/test.php?p=lobsiinvok@example.com ,就會印出 lobsiinvok@example.com ;但如果輸入 http://localhost/test.php?p=1+onmouseover=alert(document.cookie) ,那麼當滑鼠移到網頁上的1時就會彈出 cookie 值!

原因出在於從使用者得到的 $_GET['p'] 並沒有做過濾,進而影響到輸出的內容。

其實大部分的 XSS 都是出在處理不當的問題,就算是限制輸入長度,也可藉由引入外部 javascript 繞過。

再來一個範例,這裡介紹的 DOM based XSS:

<header>
</header>

<script src="jquery-1.4.4.min.js"></script>
您好,先生。
<script type="text/javascript">
if (document.URL.match(/name\=([^&]*)/)) {
var name = unescape(RegExp.$1);
$('#name').text(name);
}
</script>

如果輸入 http://127.0.0.2:8888/43/43-011.html?name=Lobsiinvok ,畫面顯示"您好,Lobsiinvok先生";但如果輸入 http://127.0.0.2:8888/43/43-011.html?name=<script>alert(document.cookie)</script> ,則畫面就會彈出 coolie值。

原因是由於在檢查時沒有正確驗證,以至於 assign 給 name 時,直接觸發內部的 script。

過濾

一般而言,簡單的過濾字元有:< > / " ' 等,但將字元轉成ASCII也碼是可被駭客利用的方法,如 javascrip&#116&#58alert('xss') ,而ASCII碼可以有不同長的前綴,故剛剛的例子也可以是 javascrip&#00116&#0000000058alert('xss') ,因此 & # 也是需要被濾過的字元。

在 IE 上, CSS 的 expression 也是可被利用的載體;另外由於 JavaScript 支持 unicode、escapes、十六禁制、八禁制等編碼形式,故 XSS 的可變性更是多元,例如在 IE 下也可用 JScript 和 VBScript Encode。


上一篇
跨網站指令碼 -- XSS介紹
下一篇
XSS Pattern〈二〉
系列文
駭客手法解析~你不能不知的資安問題!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
超級前端人
iT邦新手 3 級 ‧ 2022-10-31 23:16:53

過濾的javascript是不是打錯了?
javascrip -> javascript

thankgod iT邦新手 5 級 ‧ 2022-11-01 00:18:32 檢舉

沒有錯喔!javascript -> javascript
「t」是 t 的 HTML entity 表現式。

喔,謝謝,請問您是用什麼東西做編碼轉換的?

我要留言

立即登入留言